package com.wmh.baseservice.system.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;

/**
 * @author wmh generator
 * @since 2022-05-31
 */
@ApiModel(value="GoodsFlowAnalysis对象", description="竞品流量分析表")
public class GoodsFlowAnalysis implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    @TableField
    private Long id;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "状态1：正常 -1未使用")
    private Integer status;

    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ApiModelProperty(value = "版本")
    @Version
    private Integer version;

    @ApiModelProperty(value = "商品信息")
    private String goodsInfo;

    @ApiModelProperty(value = "商品id")
    private Long goodsId;

    @ApiModelProperty(value = "流量来源")
    private String source;

    @ApiModelProperty(value = "交易金额")
    private BigDecimal amount;

    @ApiModelProperty(value = "访客人数")
    private Integer peopleCount;

    @ApiModelProperty(value = "支付转化率1:100")
    private Float payRate;

    @ApiModelProperty(value = "客单价")
    private BigDecimal guestUnitPrice;

    @ApiModelProperty(value = "uv价值")
    private BigDecimal uvCost;

    @ApiModelProperty(value = "数据本身日期")
    private Date dataDate;

    @ApiModelProperty(value = "支付人数")
    private Integer payCount;

    @TableField(exist = false)
    private String date;

    @TableField(exist = false)
    private String total;

    public String getTotal() {
        return total;
    }

    public void setTotal(String total) {
        this.total = total;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
    public Long getId() {
        return id;
    }

    public GoodsFlowAnalysis setId(Long id) {
        this.id = id;
        return this;
    }
    public String getRemark() {
        return remark;
    }

    public GoodsFlowAnalysis setRemark(String remark) {
        this.remark = remark;
        return this;
    }
    public Integer getStatus() {
        return status;
    }

    public GoodsFlowAnalysis setStatus(Integer status) {
        this.status = status;
        return this;
    }
    public Date getUpdateTime() {
        return updateTime;
    }

    public GoodsFlowAnalysis setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
        return this;
    }
    public Date getCreateTime() {
        return createTime;
    }

    public GoodsFlowAnalysis setCreateTime(Date createTime) {
        this.createTime = createTime;
        return this;
    }
    public Integer getVersion() {
        return version;
    }

    public GoodsFlowAnalysis setVersion(Integer version) {
        this.version = version;
        return this;
    }
    public String getGoodsInfo() {
        return goodsInfo;
    }

    public GoodsFlowAnalysis setGoodsInfo(String goodsInfo) {
        this.goodsInfo = goodsInfo;
        return this;
    }
    public Long getGoodsId() {
        return goodsId;
    }

    public GoodsFlowAnalysis setGoodsId(Long goodsId) {
        this.goodsId = goodsId;
        return this;
    }
    public String getSource() {
        return source;
    }

    public GoodsFlowAnalysis setSource(String source) {
        this.source = source;
        return this;
    }
    public BigDecimal getAmount() {
        return amount;
    }

    public GoodsFlowAnalysis setAmount(BigDecimal amount) {
        this.amount = amount;
        return this;
    }
    public Integer getPeopleCount() {
        return peopleCount;
    }

    public GoodsFlowAnalysis setPeopleCount(Integer peopleCount) {
        this.peopleCount = peopleCount;
        return this;
    }
    public Float getPayRate() {
        return payRate;
    }

    public GoodsFlowAnalysis setPayRate(Float payRate) {
        this.payRate = payRate;
        return this;
    }
    public BigDecimal getGuestUnitPrice() {
        return guestUnitPrice;
    }

    public GoodsFlowAnalysis setGuestUnitPrice(BigDecimal guestUnitPrice) {
        this.guestUnitPrice = guestUnitPrice;
        return this;
    }
    public BigDecimal getUvCost() {
        return uvCost;
    }

    public GoodsFlowAnalysis setUvCost(BigDecimal uvCost) {
        this.uvCost = uvCost;
        return this;
    }
    public Date getDataDate() {
        return dataDate;
    }

    public GoodsFlowAnalysis setDataDate(Date dataDate) {
        this.dataDate = dataDate;
        return this;
    }
    public Integer getPayCount() {
        return payCount;
    }

    public GoodsFlowAnalysis setPayCount(Integer payCount) {
        this.payCount = payCount;
        return this;
    }

    public static final String ID = "id";

    public static final String REMARK = "remark";

    public static final String STATUS = "status";

    public static final String UPDATE_TIME = "update_time";

    public static final String CREATE_TIME = "create_time";

    public static final String VERSION = "version";

    public static final String GOODS_INFO = "goods_info";

    public static final String GOODS_ID = "goods_id";

    public static final String SOURCE = "source";

    public static final String AMOUNT = "amount";

    public static final String PEOPLE_COUNT = "people_count";

    public static final String PAY_RATE = "pay_rate";

    public static final String GUEST_UNIT_PRICE = "guest_unit_price";

    public static final String UV_COST = "uv_cost";

    public static final String DATA_DATE = "data_date";

    public static final String PAY_COUNT = "pay_count";

    @Override
    public String toString() {
        return "GoodsFlowAnalysis{" +
            "id=" + id +
            ", remark=" + remark +
            ", status=" + status +
            ", updateTime=" + updateTime +
            ", createTime=" + createTime +
            ", version=" + version +
            ", goodsInfo=" + goodsInfo +
            ", goodsId=" + goodsId +
            ", source=" + source +
            ", amount=" + amount +
            ", peopleCount=" + peopleCount +
            ", payRate=" + payRate +
            ", guestUnitPrice=" + guestUnitPrice +
            ", uvCost=" + uvCost +
            ", dataDate=" + dataDate +
            ", payCount=" + payCount +
        "}";
    }

    public final static String[] getFields(String ...noField){
        List<String> list = new ArrayList<>(Arrays.asList(
            GoodsFlowAnalysis.ID
            ,GoodsFlowAnalysis.REMARK
            ,GoodsFlowAnalysis.STATUS
            ,GoodsFlowAnalysis.UPDATE_TIME
            ,GoodsFlowAnalysis.CREATE_TIME
            ,GoodsFlowAnalysis.VERSION
            ,GoodsFlowAnalysis.GOODS_INFO
            ,GoodsFlowAnalysis.GOODS_ID
            ,GoodsFlowAnalysis.SOURCE
            ,GoodsFlowAnalysis.AMOUNT
            ,GoodsFlowAnalysis.PEOPLE_COUNT
            ,GoodsFlowAnalysis.PAY_RATE
            ,GoodsFlowAnalysis.GUEST_UNIT_PRICE
            ,GoodsFlowAnalysis.UV_COST
            ,GoodsFlowAnalysis.DATA_DATE
            ,GoodsFlowAnalysis.PAY_COUNT
        ));
        list.removeAll(new ArrayList<>(Arrays.asList(noField)));
        return list.toArray(new String[0]);
    }
}